Skip to content

feat(tui): add read-only transcript navigation - #110

Open
danielkov wants to merge 3 commits into
mainfrom
feat/transcript-navigation
Open

feat(tui): add read-only transcript navigation#110
danielkov wants to merge 3 commits into
mainfrom
feat/transcript-navigation

Conversation

@danielkov

@danielkov danielkov commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Summary

Add a read-only transcript navigator, opened with F3 or /transcript, with text search, role filters, previews, and user-prompt jumps. Reveal the selected block without changing conversation history or the parked prompt.

Impact

Navigation remains available while streaming and covers currently displayed or replayed history, not compacted archives. Search queries are limited to 4,096 UTF-8 bytes, and previews bound source consumption before Unicode segmentation.

Technical details

Stable selection within the active session

Selection uses ephemeral block identities separate from tool focus. Wrapped render offsets reveal the chosen block and preserve its position through resize until automatic following resumes; these display identities are not durable continuation addresses.

Input timing and overload safety

A dedicated terminal reader captures receipt times independently of rendering and searching, so delayed processing cannot turn pasted newlines into actions or discard deliberate input. Its queue bounds both event count and retained paste bytes. Overload discards pending input and requires quiet periods around an explicit Escape acknowledgement before controls become active again. The warning distinguishes waiting for quiet from readiness to acknowledge, and further input revokes readiness.

Linux terminal polling

Enable crossterm's use-dev-tty backend only on Linux to avoid reporting quiet while terminal bytes remain unread. This adds audited filedescriptor 0.8.3 without upgrading existing packages; other platforms retain their current backend. Terminal stdin remains preferred, with /dev/tty fallback for redirected stdin.

@kit-code-agent kit-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Three issues remain: viewport changes can restore a stale reveal anchor after automatic following resumes; slow navigator processing can discard deliberate Enter/Tab input; and oversized Unicode graphemes defeat the preview work and allocation bounds.

Comment thread src/tui/app.rs
Comment thread src/tui/app.rs Outdated
Comment thread src/tui/transcript.rs Outdated
Comment thread src/tui/transcript.rs
kit-code-agent[bot]
kit-code-agent Bot previously approved these changes Sep 5, 2026

@kit-code-agent kit-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found. The changes look good to merge.

@kit-code-agent kit-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PTY recovery test can discard its only acknowledgement Escape because its fixed sleep starts before the parent sends the final input tail, causing an intermittent timeout despite correct recovery behavior.

Comment thread src/tui/input.rs
kit-code-agent[bot]
kit-code-agent Bot previously approved these changes Sep 6, 2026

@kit-code-agent kit-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found. The changes look good to merge.

@kit-code-agent kit-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found. The changes look good to merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant